<?php
/**
* Calendar Helper for CakePHP
*
*	Copyright 2008 John Elliott
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
*
* @author John Elliott
* @copyright 2008 John Elliott
* @link http://www.flipflops.org More Information
* @license			http://www.opensource.org/licenses/mit-license.php The MIT License
*
*/

class CalendarHelper extends Helper
{

	var $helpers = array('Form', 'Html', 'Javascript', 'Ajax','Session');
   

/**
* Generates a Calendar for the specified by the month and year params and populates it with the content of the data array
*
* @param $year string
* @param $month string
* @param $data array
* @return string HTML code to display calendar in view
*
*/
	
	function mensual($year = '', $month = '', $data = '')
		{
			$str = '';
			$month_list = array('january', 'febuary', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december');
			$month_list_esp = array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
			$day_list = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
			$day_list_esp = array('L', 'M', 'M', 'J', 'V', 'S', 'D');
			$day = 1;
			$today = 0;
			
			if($year == '' || $month == '')// just use current yeear & month
				{
					$year = date('Y');
					$month = strtolower(date('F'));
				}
			
			$flag = 0;
				
			for($i = 0; $i < 12; $i++){
					if(strtolower($month) == $month_list[$i])
						{
							if(intval($year) != 0)
								{
									$flag = 1;
									$month_num = $i + 1;
									break;
								}
						}
			}
			
			
			if($flag == 0)
				{
					$year = date('Y');
					$month = date('F');
					$month_num = date('m');
				}
				
			$next_year = $year;
			$prev_year = $year;
			
			$next_month = intval($month_num) + 1;
			$prev_month = intval($month_num) - 1;
			
			if($next_month == 13)
				{
					$next_month = 'january';
					$next_year = intval($year) + 1;
				}
			else
				{
					$next_month = $month_list[$next_month -1];
					
				}
				
			if($prev_month == 0)
				{
					$prev_month = 'december';
					$prev_year = intval($year) - 1;
				}
			else
				{
					$prev_month = $month_list[$prev_month - 1];
				}
				
			if($year == date('Y') && strtolower($month) == strtolower(date('F')))
				{	// set the flag that shows todays date but only in the current month - not past or future...
					$today = date('j');
				}
				
			$days_in_month = date("t", mktime(0, 0, 0, $month_num, 1, $year));
						
			$first_day_in_month = date('D', mktime(0,0,0, $month_num, 1, $year)); 


			$str .= '<table class="calendar">';
			
			$str .= '<thead>';
			
			$str .= '<tr><th class="cell-prev">';
			

			$str .= $this->Ajax->link($this->Html->image("/images/ico-ant.gif", array('alt' => 'Mes Anterior','title' => 'Mes Anterior')),'/calendarios/mensual/' . $prev_year . '/' . $prev_month, array( 'update' => 'calendario', 'indicator' => 'cargando', 'escape'=> false)); 
			
			$str .= '</th><th colspan="5">' . $month_list_esp[$month_num-1] . ' ' . $year . '</th><th class="cell-next">';
			
			$str .= $this->Ajax->link($this->Html->image("/images/ico-sig.gif", array('alt' => 'Mes Siguiente','title' => 'Mes Siguiente')),'/calendarios/mensual/' . $next_year . '/' . $next_month, array( 'update' => 'calendario', 'indicator' => 'cargando', 'escape'=> false)); 
			
			$str .= '</th></tr>';
			
			

			$str .= '<tr>';
			
				for($i = 0; $i < 7;$i++) {
						$str .= '<th class="cell-header">' . $day_list_esp[$i] . '</th>';
				}
				
			$str .= '</tr>';
			
			$str .= '</thead>';
			
			
			
			
			$str .= '<tbody>';
		

				while($day <= $days_in_month)
					{
						$str .= '<tr>';
								
								for($i = 0; $i < 7; $i ++)
									{
										// Armo el string YYYY-MM-DD
										$txt_fecha = $year."-".date("m", mktime(0,0,0,$month_num,$day,$year))."-".date("d", mktime(0,0,0,$month_num,$day,$year));

										if(isset($data[$txt_fecha])){
											$cell = '<img src="/images/ico-barra-vertical.gif" width="2" height="'.($data[$txt_fecha]).'" hspace="0">&nbsp;';
										}else{
											$cell = '&nbsp;';
										}

										$class = '';
										
										if($i > 4){
											$class = ' class="cell-weekend" ';
										}

										if($day == $today){
												$class = ' class="cell-today" ';
										}


										if(($first_day_in_month == $day_list[$i] || $day > 1) && ($day <= $days_in_month)){
											$str .= '<td ' . $class . '><span class="cell-data">' . $cell . '</span><span class="cell-number">'.$this->Ajax->link($day , array('controller' => 'calendarios','action' => 'semanal',$year,$month_num,$day), array( 'update' => 'panel_derecho', 'indicator' => 'cargando')).'</span></td>';
											$day++;
										}else{
											$str .= '<td ' . $class . '>&nbsp;</td>';
										}


									}
							
						$str .= '</tr>';

						if($day > 35){ break;}
					}
		
			$str .= '</tbody>';
			
			$str .= '</table>';
			
			return $str;
		}

	function semanal($anio = null, $mes = null, $dia = null, $id_profesional = null, $data = null, $config_agenda = null, $feriados = null, $nombre_medico = '', $lista=false){

		/* ----------------------------------------------------------------------------- */
		/* Obtengo los datos de Config de la Agenda										 */
		/* ----------------------------------------------------------------------------- */

			$horario_comienzo = 1400; // expresado en minutos, por ej. 480 son las 8 hs
			$horario_fin = 0; // expresado en minutos
			$intervalo_horario = 60; // expresados en minutos
			if(!empty($config_agenda)){
				foreach($config_agenda AS $indice => $registro){

					// Convierto la hora de comienzo del Segmento en minutos
					$min_comienzo_segmento = (substr($registro['Segment']['horario_desde'],0,2) * 60) + substr($registro['Segment']['horario_desde'],3,2);
					$min_fin_segmento = (substr($registro['Segment']['horario_hasta'],0,2) * 60) + substr($registro['Segment']['horario_hasta'],3,2);


					// Defino el Intervalo minimo de Segmento
					if(!empty($registro['Segment']['duracion']) AND $registro['Segment']['duracion'] < $intervalo_horario){
						$intervalo_horario = $registro['Segment']['duracion'];
					}

					// Defino el Horario minimo del Día
					if($min_comienzo_segmento < $horario_comienzo){
						$horario_comienzo = $min_comienzo_segmento;
					}
					if($min_fin_segmento > $horario_fin){
						$horario_fin = $min_fin_segmento;
					}


					$registro_segmento['comienzo_segmento'] = $min_comienzo_segmento;
					$registro_segmento['fin_segmento'] = $min_fin_segmento;
					$registro_segmento['duracion_segmento'] = $registro['Segment']['duracion'];
					$registro_segmento['sobreturno_segmento'] = $registro['Segment']['sobreturno'];


					// Si es el primer Segmento del día
					if(empty($arreglo_conf_agenda[$registro['Segment']['day_id']])){
						$arreglo_conf_agenda[$registro['Segment']['day_id']] = array();
					}

					array_push($arreglo_conf_agenda[$registro['Segment']['day_id']], $registro_segmento); 
				}
			}

		/* ----------------------------------------------------------------------------- */
		/* Obtengo los Feriados de la Semana											 */
		/* ----------------------------------------------------------------------------- */

			if(!empty($feriados)){
				foreach($feriados AS $registro){
					$fecha_mes_dia = substr($registro['Feriado']['fecha'],5);
					$arreglo_feriados[$fecha_mes_dia] = $registro['Feriado']['name'];
				}
			}

		/* ----------------------------------------------------------------------------- */

		// Defino los parametros generales del calendario semanal
		$day_list_esp = array('Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom');
		
		$str = "";


		// Defino la Semana de que fecha a que fecha esta definida
		$en_que_dia_de_la_semana_cae = date('w', mktime(0,0,0, $mes, $dia, $anio)); 

		if($en_que_dia_de_la_semana_cae == 0){ // Si es Domingo
			$semana_comenza = date("j",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae, $anio));
			$leyenda_rango_semana = 'Semana del '.date("d/m/Y",mktime(0,0,0,$mes, $dia - 6, $anio)).' al '.date("d/m/Y",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae, $anio));
		}else{
			$semana_comenza = date("j",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1, $anio));
			$leyenda_rango_semana = 'Semana del '.date("d/m/Y",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1, $anio)).' al '.date("d/m/Y",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + 6, $anio));
		}


		// Defino el Logo del cliente si existe
		$logo = $this->Session->read('Client.logo');
		if(!empty($logo)){ 
			$logo = '/uploads/'.$logo;	
		}else{
			$logo = '/images/logo-epicrisis2.png';
		}
		

		$str .= "
			<!-- <div>
				<div style='float:left; padding: 10px;'><h1>$leyenda_rango_semana</h1></div>
				<div style='float:right; padding: 8px;'><a href=\"javascript:CancelarTurnos(''.$anio.'/'.$mes.'/'.$dia.'\')\" 
					class='link_destacado'>Cancelar los Turnos Seleccionados</a></div>
			</div> -->
			
			<div class='to_print'>
		        <div class='cabeza_print' style='height: 50px;'>
		            <div style='width: 30%; float: left;'><img src='".$logo."' style='max-height:40px;'></div>
		            <div style='text-align: right; float: right; color: #000000;'>
		            	<div style='font-size: 120%;'><B>".__('LISTADO DE TURNOS', true)."</B></div>
		            	<div>$nombre_medico</div>
		            </div>
		        </div>

			<table class='calendar'>
			<thead>
			  <tr>
				<th class='cell-header'>&nbsp;</th>
		";

		// Muestro el encabezado del calendario semanal
		for($i = 0; $i < 7;$i++) {

			$class = ' class="cell-header" ';

			if($en_que_dia_de_la_semana_cae == 0){ // Si es Domingo
				$encabezado_dia_semana = date("j",mktime(0,0,0,$mes, $dia - 6 + $i, $anio));
				$arreglo_dias[$i] = date("Y-m-d",mktime(0,0,0,$mes, $dia - 6 + $i, $anio));
				$arreglo_dias_puro[$i] = date("Ymd",mktime(0,0,0,$mes, $dia - 6 + $i, $anio));
				$arreglo_dias_controlador[$i] = date("Y/m/d",mktime(0,0,0,$mes, $dia - 6 + $i, $anio));
				$arreglo_mes_dias_feriados[$i] = date("m-d",mktime(0,0,0,$mes, $dia - 6 + $i, $anio));

				if($i == 6){
					$class = ' class="cell-today" ';
				}

			}else{
				$encabezado_dia_semana = date("j",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + $i, $anio));
				$arreglo_dias[$i] = date("Y-m-d",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + $i, $anio));
				$arreglo_dias_puro[$i] = date("Ymd",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + $i, $anio));
				$arreglo_dias_controlador[$i] = date("Y/m/d",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + $i, $anio));
				$arreglo_mes_dias_feriados[$i] = date("m-d",mktime(0,0,0,$mes, $dia - $en_que_dia_de_la_semana_cae + 1 + $i, $anio));

				if($i == ($en_que_dia_de_la_semana_cae-1)){
					$class = ' class="cell-today" ';
				}
			}

			// Si el Dia es Feriado
			if(isset($arreglo_feriados[$arreglo_mes_dias_feriados[$i]])){
				$class = ' class="cell-dia-feriado" ';
				$detalle_feriado = "<br>".$arreglo_feriados[$arreglo_mes_dias_feriados[$i]];
			}else{
				$detalle_feriado = "";
			}

			// Si el Día tiene Segmentos, muestro el Checkbox para poder cancelar el día completo
			if(!empty($arreglo_conf_agenda[$i+1])){
				$str_checkbox = '<input type="checkbox" id="checkAll_'.($i+1).'" value="'.($i+1).'" onclick="seleccionarTodo(\''.($i+1).'\')"/>';
			}else{
				$str_checkbox = "";
			}

			$str .= '<th '.$class.'>'.$str_checkbox.$day_list_esp[$i] . ' '.$encabezado_dia_semana.$detalle_feriado.'</th>';
		}
			
		$str .= '
			  </tr>
			</thead>
			<tbody>
		';

		// Muestro los horarios y las celdas a la derecha de los horarios
		for($i = $horario_comienzo; $i <= $horario_fin;$i=$i+$intervalo_horario) {
		
			$str .= '
				  <tr> 
					<td class="cell-horario">'.date("H:i",mktime(0,$i,0,0,0,0)).'</td>
			';

			// Cargo la Celda de cada día y horario	

			for($j=0; $j < 7; $j++){

				/*----------------------------------------------------------------------------*/
				/* Determino cual es el Segmento Actual										  */
				/*----------------------------------------------------------------------------*/

					$segmento_actual = array();

					if(!empty($arreglo_conf_agenda[$j+1])){

						// Si existe más de un Segmento en el día
						if(count($arreglo_conf_agenda[$j+1]) > 1){

							for($indice = 0; $indice < count($arreglo_conf_agenda[$j+1]) ; $indice++ ){

								if($arreglo_conf_agenda[$j+1][$indice]['comienzo_segmento'] <= $i AND $arreglo_conf_agenda[$j+1][$indice]['fin_segmento'] >= $i){
									$segmento_actual = $arreglo_conf_agenda[$j+1][$indice];
									break;
								}
							}

						}else{ // Si existe un solo Segmento en el día
							$segmento_actual = $arreglo_conf_agenda[$j+1][0];
						}
					}

				/*----------------------------------------------------------------------------*/

				// Inicializo la Celda
				$cell = '';
				$class = ' class="cell-header-dia" ';

				if("$anio-$mes-$dia" == $arreglo_dias[$j]){
					//$class = ' class="cell-dia-today" ';
				}

				// Armo el indice para saber si existen datos para el horario especificado
				$fecha_completa_verificar = $arreglo_dias[$j]." ".date("H:i",mktime(0,$i,0,0,0,0)).":00";
				$fecha_fin                = $arreglo_dias[$j]." ".date("H:i",mktime(0,$i+($intervalo_horario-1),0,0,0,0)).":59";
//echo $fecha_completa_verificar.' al '.$fecha_fin.'<br>';
				// Determino si alguna de las fechas a mostrar son anteriores a HOY
				if(strftime($arreglo_dias[$j]) < strftime(date("Y-m-d"))){
					$disabledCell = true;
				}else{
					$disabledCell = false;
				}

				$nombre_div = 'alta_turno_calendario_'.$arreglo_dias_puro[$j].date("Hi",mktime(0,$i,0,0,0,0));
				
				//---------------------------------------------------------------------------
				// Hago un ciclo dentro del array data(contiene todos los turnos de la semana)
				// para ver si alguno esta en el rango de dia/hora que estoy mostrando
				//---------------------------------------------------------------------------
				if(!empty($data)){
					foreach ($data as $clave=>$valor){
						$muestra = false;				
						if($clave>$fecha_completa_verificar and $clave<$fecha_fin){
							if(!isset($data[$fecha_completa_verificar])){
								$data[$fecha_completa_verificar] = $valor;
							} else {
								$data[$fecha_completa_verificar] = $data[$fecha_completa_verificar].$valor;
							}
						} 
					
					}
				}	
				
				// Si hay datos para el día y horario, lo muestro
				if(isset($data[$fecha_completa_verificar])){ 
//				if($muestra){ 
					$cell = $data[$fecha_completa_verificar]; 
					

					// Si el Segmento soporta SOBRETURNO
					if(!empty($segmento_actual) AND $segmento_actual['sobreturno_segmento'] == "S"){
					
	
						if($disabledCell){
							$str .= '<td>'.$cell.'</td>';
						}else{
							$str .= '<td '.$class.' 
									onmouseover="document.getElementById(\''.$nombre_div.'\').style.display=\'block\'" 
									onmouseout="document.getElementById(\''.$nombre_div.'\').style.display=\'none\';">
									'.$cell.'<div id="'.$nombre_div.'" style="display: none;"><a href="javascript:MostrarModal(\'ventana_modal\',\'Carga de Turno\',\'/turns/add/'.$arreglo_dias_controlador[$j].date("/H/i",mktime(0,$i,0,0,0,0)).'/'.$id_profesional.'/S\',440,400)"><br>Sobreturno</a>
									</div></td>';
						}

					}else{
						$str .= '<td '.$class.'>'.$cell.'</td>';
					}


				}else{ // Si no hay datos para el día y horario, muestro la opcion de alta

					// Si existe un Segmento para el día
					if(!empty($segmento_actual)){
						// El contenido de cada Celda
						$contenido = "";

						// Si el Segmento no esta Habilitdo
						if($segmento_actual['comienzo_segmento'] < $i AND $segmento_actual['fin_segmento'] < $i ){
							$class = ' class="cell-dia-disabled" ';
							$str .= '<td '.$class.'>&nbsp;</td>';
						}
						if($segmento_actual['comienzo_segmento'] > $i AND $segmento_actual['fin_segmento'] > $i ){
							$class = ' class="cell-dia-disabled" ';
							$str .= '<td '.$class.'>&nbsp;</td>';
						}

						// Si el Segmento esta Habilitdo
						if($segmento_actual['comienzo_segmento'] <= $i AND $segmento_actual['fin_segmento'] >= $i ){

							$nombre_div = 'alta_turno_calendario_'.$arreglo_dias_puro[$j].date("Hi",mktime(0,$i,0,0,0,0));
		
							if($disabledCell){
								$str .= '<td>'.$cell.'</td>';
							}else{
								$str .= '<td '.$class.' onmouseover="document.getElementById(\''.$nombre_div.'\').style.display=\'block\'" onmouseout="document.getElementById(\''.$nombre_div.'\').style.display=\'none\';">'.$cell.'<div id="'.$nombre_div.'" style="display: none;"><a href="javascript:MostrarModal(\'ventana_modal\',\'Carga de Turno\',\'/turns/add/'.$arreglo_dias_controlador[$j].date("/H/i",mktime(0,$i,0,0,0,0)).'/'.$id_profesional.'/N\',440,400)">Nuevo Turno</a></div></td>';
							}
						}
					}else{ // Si no existe un Segmento para el día
						$class = ' class="cell-dia-disabled" ';
						$str .= '<td '.$class.'>&nbsp;</td>';
					}
				}
			}

			$str .= '
				  </tr>
			';
		}

		$str .= "
			</tbody>
			</table>
			</div> <!-- en to_print -->
			
		";

		return $str;
	} //end function semanal
	
	
	function semanallista($anio = null, $mes = null, $dia = null, $id_profesional = null, $data = null, $config_agenda = null, $feriados = null, $nombre_medico = '', $lista=false){
		
		$fecha_actual='';
		$color       = '#FFF';
		$hora_actual = '';


		// Defino el Logo del cliente si existe
		$logo = $this->Session->read('Client.logo');
		if(!empty($logo)){ 
			$logo = '/uploads/'.$logo;	
		}else{
			$logo = '/images/logo-epicrisis2.png';
		}


		echo "<div class='to_print'>
		        <div class='cabeza_print' style='height: 50px;'>
		            <div style='width: 30%; float: left;'><img src='".$logo."' style='max-height:40px;'></div>
		            <div style='text-align: right; float: right; color: #000000;'>
		            	<div style='font-size: 120%;'><B>".__('LISTADO DE TURNOS', true)."</B></div>
		            	<div>$nombre_medico</div>
		            </div>
		        </div>
			";
		
		if(!empty($data)){
			$contador_renglon = 1;
			foreach($data as $clave=>$valor){
				$contador_renglon++;
				$xfecha = explode(' ',$clave);
				list($xanio,$xmes,$xdia) = explode('-',$xfecha[0]);
				$fecha = "$xdia/$xmes/$xanio";
				

				// Determino el día de la semana
				switch(date('w', mktime(0,0,0,$xmes,$xdia, $xanio))){
					case "0": 
						$txt_dia_semana = __('Domingo', true);
						break;
					case "1": 
						$txt_dia_semana = __('Lunes', true);
						break;
					case "2": 
						$txt_dia_semana = __('Martes', true);
						break;
					case "3": 
						$txt_dia_semana = __('Miércoles', true);
						break;
					case "4": 
						$txt_dia_semana = __('Jueves', true);
						break;
					case "5": 
						$txt_dia_semana = __('Viernes', true);
						break;
					case "6": 
						$txt_dia_semana = __('Sábado', true);
						break;
				}

				if ($fecha_actual!=$fecha){
				
					$fecha_actual = $fecha;
					echo "<h1 class='agenda'>$txt_dia_semana, $fecha_actual</h1>";
				}
				
				if($hora_actual!=$xfecha[1]){
					$hora_actual = $xfecha[1];
				}
				$paciente = preg_replace('/<br\\s*?\/??>/i', ' - ', $valor);
				$paciente = preg_replace('/margin-bottom:10px;/', '', $paciente);
				
				$color='#FFF';

				//$paciente = strip_tags($paciente);
				echo "<div style='background:$color;border-bottom: 1px solid #E0E0E0;'>";
				echo "<div class='agenda_hora'>".substr($hora_actual,0,5)."</div>";
				echo "<div class='agenda_pacientes'>$paciente</div>";
				echo "</div>";
				
			}
		}
		echo "</div>"; // end div to_print

	} // end function semanallista	


	function diario($anio = null, $mes = null, $dia = null, $id_profesional = null, $data = null, $config_agenda = null, $feriados = null, $nombre_medico = '', $lista=false){

		/* ----------------------------------------------------------------------------- */
		/* Obtengo los datos de Config de la Agenda										 */
		/* ----------------------------------------------------------------------------- */

			$horario_comienzo = 1400; // expresado en minutos, por ej. 480 son las 8 hs
			$horario_fin = 0; // expresado en minutos
			$intervalo_horario = 60; // expresados en minutos
			if(!empty($config_agenda)){
				foreach($config_agenda AS $indice => $registro){

					// Convierto la hora de comienzo del Segmento en minutos
					$min_comienzo_segmento = (substr($registro['Segment']['horario_desde'],0,2) * 60) + substr($registro['Segment']['horario_desde'],3,2);
					$min_fin_segmento = (substr($registro['Segment']['horario_hasta'],0,2) * 60) + substr($registro['Segment']['horario_hasta'],3,2);


					// Defino el Intervalo minimo de Segmento
					if(!empty($registro['Segment']['duracion']) AND $registro['Segment']['duracion'] < $intervalo_horario){
						$intervalo_horario = $registro['Segment']['duracion'];
					}

					// Defino el Horario minimo del Día
					if($min_comienzo_segmento < $horario_comienzo){
						$horario_comienzo = $min_comienzo_segmento;
					}
					if($min_fin_segmento > $horario_fin){
						$horario_fin = $min_fin_segmento;
					}


					$registro_segmento['comienzo_segmento'] = $min_comienzo_segmento;
					$registro_segmento['fin_segmento'] = $min_fin_segmento;
					$registro_segmento['duracion_segmento'] = $registro['Segment']['duracion'];
					$registro_segmento['sobreturno_segmento'] = $registro['Segment']['sobreturno'];


					// Si es el primer Segmento del día
					if(empty($arreglo_conf_agenda[$registro['Segment']['day_id']])){
						$arreglo_conf_agenda[$registro['Segment']['day_id']] = array();
					}

					array_push($arreglo_conf_agenda[$registro['Segment']['day_id']], $registro_segmento); 
				}
			}

		/* ----------------------------------------------------------------------------- */
		/* Obtengo los Feriados de la Semana											 */
		/* ----------------------------------------------------------------------------- */

			if(!empty($feriados)){
				foreach($feriados AS $registro){
					$fecha_mes_dia = substr($registro['Feriado']['fecha'],5);
					$arreglo_feriados[$fecha_mes_dia] = $registro['Feriado']['name'];
				}
			}

		/* ----------------------------------------------------------------------------- */

		// Defino los parametros generales del calendario semanal
		$day_list_esp = array('Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom');
		
		$str = "";


		// Defino la Semana de que fecha a que fecha esta definida
		$en_que_dia_de_la_semana_cae = date('w', mktime(12,0,0, $mes, $dia, $anio)); 
		$semana_comenza = date("j",mktime(0,0,0,$mes, $dia, $anio));
		$leyenda_rango_semana = 'Semana del '.date("d/m/Y",mktime(0,0,0,$mes, $dia, $anio)).' al '.date("d/m/Y",mktime(0,0,0,$mes, $dia, $anio));

		
		// Defino el Logo del cliente si existe
		$logo = $this->Session->read('Client.logo');
		if(!empty($logo)){ 
			$logo = '/uploads/'.$logo;	
		}else{
			$logo = '/images/logo-epicrisis2.png';
		}


		$str .= "
			<div class='to_print'>

		        <div class='cabeza_print' style='height: 50px;'>
		            <div style='width: 30%; float: left;'><img src='".$logo."' style='max-height:40px;'></div>
		            <div style='text-align: right; float: right; color: #000000;'>
		            	<div style='font-size: 120%;'><B>".__('LISTADO DE TURNOS', true)."</B></div>
		            	<div>$nombre_medico</div>
		            </div>
		        </div>

			<table class='calendar'>
			<thead>
			  <tr>
				<th class='cell-header'>&nbsp;</th>
		";

		// Muestro el encabezado del calendario diario

			$i = $en_que_dia_de_la_semana_cae;
			$class = ' class="cell-header" ';
			// Si el Día tiene Segmentos, muestro el Checkbox para poder cancelar el día completo
			if(!empty($arreglo_conf_agenda[$i])){
				$str_checkbox = '<input type="checkbox" style="width:30px;" id="checkAll_'.($i).'" value="'.($i).'" onclick="seleccionarTodo(\''.($i).'\')"/>';
			}else{
				$str_checkbox = "";
			}
			$encabezado_dia_semana = date("j",mktime(0,0,0,$mes, $dia, $anio));
			$str .= '<th '.$class.'>'.$str_checkbox.$day_list_esp[$i-1] . ' '.$encabezado_dia_semana.'</th>';

			
		$str .= '
			  </tr>
			</thead>
			<tbody>
		';

		// Muestro los horarios y las celdas a la derecha de los horarios
		for($i = $horario_comienzo; $i <= $horario_fin;$i=$i+$intervalo_horario) {
		
			$str .= '
				  <tr> 
					<td class="cell-horario" style="width:80px;">'.date("H:i",mktime(0,$i,0,0,0,0)).'</td>
			';

			// Cargo la Celda de cada día y horario	


			$j = $en_que_dia_de_la_semana_cae;

				/*----------------------------------------------------------------------------*/
				/* Determino cual es el Segmento Actual										  */
				/*----------------------------------------------------------------------------*/

					$segmento_actual = array();

					if(!empty($arreglo_conf_agenda[$j])){

						// Si existe más de un Segmento en el día
						if(count($arreglo_conf_agenda[$j]) > 1){

							for($indice = 0; $indice < count($arreglo_conf_agenda[$j]) ; $indice++ ){

								if($arreglo_conf_agenda[$j][$indice]['comienzo_segmento'] <= $i AND $arreglo_conf_agenda[$j][$indice]['fin_segmento'] >= $i){
									$segmento_actual = $arreglo_conf_agenda[$j][$indice];
									break;
								}
							}

						}else{ // Si existe un solo Segmento en el día
							$segmento_actual = $arreglo_conf_agenda[$j][0];
						}
					}

				/*----------------------------------------------------------------------------*/


				$arreglo_dias[$j] = "$anio-$mes-$dia";
				// Inicializo la Celda
				$cell = '';
				$class = ' class="cell-header-dia" ';

				if("$anio-$mes-$dia" == $arreglo_dias[$j]){
					//$class = ' class="cell-dia-today" ';
				}

				// Armo el indice para saber si existen datos para el horario especificado
				$fecha_completa_verificar = $arreglo_dias[$j]." ".date("H:i",mktime(0,$i,0,0,0,0)).":00";
				$fecha_fin                = $arreglo_dias[$j]." ".date("H:i",mktime(0,$i+($intervalo_horario-1),0,0,0,0)).":59";

				// Determino si alguna de las fechas a mostrar son anteriores a HOY
				if(strftime($arreglo_dias[$j]) < strftime(date("Y-m-d"))){
					$disabledCell = true;
				}else{
					$disabledCell = false;
				}

				$nombre_div = 'alta_turno_calendario_'.$arreglo_dias[$j].date("Hi",mktime(0,$i,0,0,0,0));
				
				//---------------------------------------------------------------------------
				// Hago un ciclo dentro del array data(contiene todos los turnos de la semana)
				// para ver si alguno esta en el rango de dia/hora que estoy mostrando
				//---------------------------------------------------------------------------
				if(!empty($data)){
					foreach ($data as $clave=>$valor){
						$muestra = false;				
						if($clave>$fecha_completa_verificar and $clave<$fecha_fin){
							if(!isset($data[$fecha_completa_verificar])){
								$data[$fecha_completa_verificar] = $valor;
							} else {
								$data[$fecha_completa_verificar] = $data[$fecha_completa_verificar].$valor;
							}
						} 
					
					}
				}	
				
				// Si hay datos para el día y horario, lo muestro
				if(isset($data[$fecha_completa_verificar])){ 
//				if($muestra){ 
					$cell = $data[$fecha_completa_verificar]; 
					

					// Si el Segmento soporta SOBRETURNO
					if(!empty($segmento_actual) AND $segmento_actual['sobreturno_segmento'] == "S"){
					
	
						if($disabledCell){
							$str .= '<td>'.$cell.'</td>';
						}else{
							$str .= '<td '.$class.' style="width:500px;"
									onmouseover="document.getElementById(\''.$nombre_div.'\').style.display=\'block\'" 
									onmouseout="document.getElementById(\''.$nombre_div.'\').style.display=\'none\';">
									'.$cell.'<div id="'.$nombre_div.'" style="display: none;">
									<a href="javascript:MostrarModal(\'ventana_modal\',\'Carga de Turno\',\'/turns/add/'.$anio.'/'.$mes.'/'.$dia.date("/H/i",mktime(0,$i,0,0,0,0)).'/'.$id_profesional.'/S\',440,400)"><br>Sobreturno</a>
									</div></td>';
						}

					}else{
						$str .= '<td '.$class.' style="width:500px;">'.$cell.'</td>';
					}


				}else{ // Si no hay datos para el día y horario, muestro la opcion de alta

					// Si existe un Segmento para el día
					if(!empty($segmento_actual)){
						// El contenido de cada Celda
						$contenido = "";

						// Si el Segmento no esta Habilitdo
						if($segmento_actual['comienzo_segmento'] < $i AND $segmento_actual['fin_segmento'] < $i ){
							$class = ' class="cell-dia-disabled" ';
							$str .= '<td '.$class.' style="width:500px;">&nbsp;</td>';
						}
						if($segmento_actual['comienzo_segmento'] > $i AND $segmento_actual['fin_segmento'] > $i ){
							$class = ' class="cell-dia-disabled" ';
							$str .= '<td '.$class.' style="width:500px;">&nbsp;</td>';
						}

						// Si el Segmento esta Habilitdo
						if($segmento_actual['comienzo_segmento'] <= $i AND $segmento_actual['fin_segmento'] >= $i ){

							$nombre_div = 'alta_turno_calendario_'.$arreglo_dias[$j].date("Hi",mktime(0,$i,0,0,0,0));
		
							if($disabledCell){
								$str .= '<td style="width:500px;">'.$cell.'</td>';
							}else{
								$str .= '<td '.$class.' style="width:500px;" onmouseover="document.getElementById(\''.$nombre_div.'\').style.display=\'block\'" onmouseout="document.getElementById(\''.$nombre_div.'\').style.display=\'none\';">'.$cell.'<div id="'.$nombre_div.'" style="display: none;"><a href="javascript:MostrarModal(\'ventana_modal\',\'Carga de Turno\',\'/turns/add/'.$anio.'/'.$mes.'/'.$dia.date("/H/i",mktime(0,$i,0,0,0,0)).'/'.$id_profesional.'/N\',440,400)">Nuevo Turno</a></div></td>';
							}
						}
					}else{ // Si no existe un Segmento para el día
						//$class = ' class="cell-dia-disabled" ';
						//$str .= '<td '.$class.'>&nbsp;</td>';
					}
				}
//			} //endfor

			$str .= '
				  </tr>
			';
		}

		$str .= "
			</tbody>
			</table>
			</div> <!-- en to_print -->
			
		";

		return $str;
	} //end function diario cal
	
	
	function diariolista($anio = null, $mes = null, $dia = null, $id_profesional = null, $data = null, $config_agenda = null, $feriados = null, $nombre_medico = '', $lista=false){
		
		$fecha_actual='';
		$color       = '#FFF';
		$hora_actual = '';

		// Defino el Logo del cliente si existe
		$logo = $this->Session->read('Client.logo');
		if(!empty($logo)){ 
			$logo = '/uploads/'.$logo;	
		}else{
			$logo = '/images/logo-epicrisis2.png';
		}

		
		echo "<div class='to_print'>
		        <div class='cabeza_print' style='height: 50px;'>
		            <div style='width: 30%; float: left;'><img src='".$logo."' style='max-height:40px;'></div>
		            <div style='text-align: right; float: right; color: #000000;'>
		            	<div style='font-size: 120%;'><B>".__('LISTADO DE TURNOS', true)."</B></div>
		            	<div>$nombre_medico</div>
		            </div>
		        </div>	        
			";



		
		if(!empty($data)){
			foreach($data as $clave=>$valor){
				$xfecha = explode(' ',$clave);
				list($xanio,$xmes,$xdia) = explode('-',$xfecha[0]);
				$fecha = "$xdia/$xmes/$xanio";
				
				// Determino el día de la semana
				switch(date('w', mktime(0,0,0,$xmes,$xdia, $xanio))){
					case "0": 
						$txt_dia_semana = __('Domingo', true);
						break;
					case "1": 
						$txt_dia_semana = __('Lunes', true);
						break;
					case "2": 
						$txt_dia_semana = __('Martes', true);
						break;
					case "3": 
						$txt_dia_semana = __('Miércoles', true);
						break;
					case "4": 
						$txt_dia_semana = __('Jueves', true);
						break;
					case "5": 
						$txt_dia_semana = __('Viernes', true);
						break;
					case "6": 
						$txt_dia_semana = __('Sábado', true);
						break;
				}


				if ($fecha_actual!=$fecha){
					$fecha_actual = $fecha;
					echo "<h1 class='agenda'>$txt_dia_semana, $fecha_actual</h1>";
				}
				
				if($hora_actual!=$xfecha[1]){
					$hora_actual = $xfecha[1];
				}
				$paciente = preg_replace('/<br\\s*?\/??>/i', ' - ', $valor);
				$paciente = preg_replace('/margin-bottom:10px;/', '', $paciente);
				
				$color='#FFF';

				//$paciente = strip_tags($paciente);
				echo "<div style='background:$color;border-bottom: 1px solid #E0E0E0;'>";
				echo "<div class='agenda_hora'>".substr($hora_actual,0,5)."</div>";
				echo "<div class='agenda_pacientes'>$paciente</div>";
				echo "</div>";
				
			}
		}
		echo "</div>"; // end div to_print

	} // end function diario lista
	

	
}
?>
